package com.niiwoo.civet.trade.dto.common;

import com.niiwoo.civet.trade.enums.RepayStatusEnum;
import lombok.Getter;
import lombok.Setter;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;

@Setter
@Getter
public class TradeBatchTransOrderDTO implements Serializable {
    private static final long serialVersionUID = 370000102008724987L;
    private Long id;
    /**
     * 还款批次号
     */
    private String batchRequestNo;
    /**
     * 标的号 2 REPAYMENT，4 COMPENSATORY，11 AUTO_REPAYMENT 三种
     */
    private Long projectId;
    /**
     * 交易类型，目前只有
     */
    private Byte tradeType;
    /**
     * 0还款人还款，1需代扣-还款，2需垫付-还款,3担保垫付,4还款人主动提前结清
     */
    private Byte batchRefundType;

    /**
     * 还款预处理冻结金额
     */
    private BigDecimal amount;

    /**
     * 垫付时，不可空
     */
    private BigDecimal guaranteeAmount = BigDecimal.ZERO;

    /**
     * 当前期
     */
    private Integer currentPeriod;

    /**
     * 总期数
     */
    private Integer totalPeriod;

    /**
     * 标的名称
     */
    private String projectTitle;

    /**
     * 还款状态
     * 1 正常还款中
     * 2 逾期还款中
     * 3 坏账还款中
     * 4 已结清
     */
    private Byte repayStatus;

    /**
     * 预处理冻结号
     */
    private Long proTransOrderId;

    /**
     * 还款预处理流水号
     */
    private String freezeRequestNo;

    /**
     * 代扣预处理流水号
     */
    private String proxyPretransRequestNo;

    /**
     * 应还款日期
     */
    private Date refundDate;

    /**
     * 代扣订单号
     */
    private Long withholdOrderId;

    /**
     * 借款人用户ID
     */
    private String borrowerUserId;
    /**
     * 如为垫付场景，guaranteeUserId方可有值
     */
    private String guaranteeUserId;

    /**
     * 名义还款时间
     */
    private Date titularRefundDate;

    /**
     * 罚息更新日期
     */
    private Date penaltyUpdateDate;

    public boolean getIsBad(){
        return RepayStatusEnum.BADLOANS.getCode() == this.getRepayStatus();
    }

}